<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
    <PythonExport
            Father="ComplexGeoDataPy"
            Name="FemMeshPy"
            Twin="FemMesh"
            TwinPointer="FemMesh"
            Include="Mod/Fem/App/FemMesh.h"
            Namespace="Fem"
            FatherInclude="App/ComplexGeoDataPy.h"
            FatherNamespace="Data"
            Constructor="true">
        <Documentation>
            <Author Licence="LGPL" Name="Juergen Riegel" EMail="Juergen.Riegel@web.de" />
            <UserDocu>FemMesh class</UserDocu>
        </Documentation>
        <Methode Name="setShape">
            <Documentation>
                <UserDocu>Set the Part shape to mesh</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="compute">
            <Documentation>
                <UserDocu>Update the internal mesh structure</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addHypothesis">
            <Documentation>
                <UserDocu>Add hypothesis</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="setStandardHypotheses">
            <Documentation>
                <UserDocu>Set some standard hypotheses for the whole shape</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addNode">
            <Documentation>
                <UserDocu>Add a node by setting (x,y,z).</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addEdge">
            <Documentation>
                <UserDocu>Add an edge by setting two node indices.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addFace">
            <Documentation>
                <UserDocu>Add a face by setting three node indices.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addQuad">
            <Documentation>
                <UserDocu>Add a quad by setting four node indices.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addVolume">
            <Documentation>
                <UserDocu>Add a volume by setting an arbitrary number of node indices.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="read">
            <Documentation>
                <UserDocu>Read in a various FEM mesh file formats.
                    read(file.endingToExportTo)
                    supported formats: DAT, INP, MED, STL, UNV, VTK, Z88</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="write" Const="true">
            <Documentation>
                <UserDocu>Write out various FEM mesh file formats.
                    write(file.endingToExportTo)
                    supported formats: BDF, DAT, INP, MED, STL, UNV, VTK, Z88
                </UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="writeABAQUS" Const="true">
            <Documentation>
                <UserDocu>Write out as ABAQUS inp
                    writeABAQUS(file, int elemParam, bool groupParam)
                    elemParam: 0 = all elements, 1 = highest elements only, 2 = FEM elements only (only edges not belonging to faces and faces not belonging to volumes)
                    groupParam: true = write group data, false = do not write group data
                </UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="setTransform">
            <Documentation>
                <UserDocu>Use a Placement object to perform a translation or rotation</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="copy" Const="true">
            <Documentation>
                <UserDocu>Make a copy of this FEM mesh.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getFacesByFace" Const="true">
            <Documentation>
                <UserDocu>Return a list of face IDs which belong to a TopoFace</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getEdgesByEdge" Const="true">
            <Documentation>
                <UserDocu>Return a list of edge IDs which belong to a TopoEdge</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getVolumesByFace" Const="true">
            <Documentation>
                <UserDocu>Return a dict of volume IDs and face IDs which belong to a TopoFace</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getccxVolumesByFace" Const="true">
            <Documentation>
                <UserDocu>Return a dict of volume IDs and ccx face numbers which belong to a TopoFace</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getNodeById" Const="true">
            <Documentation>
                <UserDocu>Get the node position vector by a Node-ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getNodesBySolid" Const="true">
            <Documentation>
                <UserDocu>Return a list of node IDs which belong to a TopoSolid</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getNodesByFace" Const="true">
            <Documentation>
                <UserDocu>Return a list of node IDs which belong to a TopoFace</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getNodesByEdge" Const="true">
            <Documentation>
                <UserDocu>Return a list of node IDs which belong to a TopoEdge</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getNodesByVertex" Const="true">
            <Documentation>
                <UserDocu>Return a list of node IDs which belong to a TopoVertex</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getElementNodes" Const="true">
            <Documentation>
                <UserDocu>Return a tuple of node IDs to a given element ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getNodeElements" Const="true">
            <Documentation>
                <UserDocu>Return a tuple of specific element IDs associated to a given node ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getGroupName" Const="true">
            <Documentation>
                <UserDocu>Return a string of group name to a given group ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getGroupElementType" Const="true">
            <Documentation>
                <UserDocu>Return a string of group element type to a given group ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getGroupElements" Const="true">
            <Documentation>
                <UserDocu>Return a tuple of ElementIDs to a given group ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addGroup" Const="true">
            <Documentation>
                <UserDocu>Add a group to mesh with specific name and type
                    addGroup(name, typestring, [id])
                    name: string
                    typestring: "All", "Node", "Edge", "Face", "Volume", "0DElement", "Ball"
                    id: int
                    Optional id is used to force specific id for group, but does
                    not work, yet.
                </UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="addGroupElements" Const="true">
            <Documentation>
                <UserDocu>Add a tuple of ElementIDs to a given group ID
                    addGroupElements(groupid, list_of_elements)
                    groupid: int
                    list_of_elements: list of int
                    Notice that the elements have to be in the mesh.
                </UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="removeGroup" Const="true">
            <Documentation>
                <UserDocu>Remove a group with a given group ID
                    removeGroup(groupid)
                    groupid: int
                    Returns boolean.
                </UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getElementType" Const="true">
            <Documentation>
                <UserDocu>Return the element type of a given ID</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getIdByElementType" Const="true">
            <Documentation>
                <UserDocu>Return a tuple of IDs to a given element type</UserDocu>
            </Documentation>
        </Methode>
        <Attribute Name="Nodes" ReadOnly="true">
            <Documentation>
                <UserDocu>Dictionary of Nodes by ID (int ID:Vector())</UserDocu>
            </Documentation>
            <Parameter Name="Nodes" Type="Dict"/>
        </Attribute>
        <Attribute Name="NodeCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of nodes in the Mesh.</UserDocu>
            </Documentation>
          <Parameter Name="NodeCount" Type="Long"/>
        </Attribute>
        <Attribute Name="Edges" ReadOnly="true">
            <Documentation>
                <UserDocu>Tuple of edge IDs</UserDocu>
            </Documentation>
            <Parameter Name="Edges" Type="Tuple"/>
        </Attribute>
        <Attribute Name="EdgesOnly" ReadOnly="true">
            <Documentation>
                <UserDocu>Tuple of edge IDs which does not belong to any face (and thus not belong to any volume too)</UserDocu>
            </Documentation>
            <Parameter Name="EdgesOnly" Type="Tuple"/>
        </Attribute>
        <Attribute Name="EdgeCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of edges in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="EdgeCount" Type="Long"/>
        </Attribute>
        <Attribute Name="Faces" ReadOnly="true">
            <Documentation>
                <UserDocu>Tuple of face IDs</UserDocu>
            </Documentation>
            <Parameter Name="Faces" Type="Tuple"/>
        </Attribute>
        <Attribute Name="FacesOnly" ReadOnly="true">
            <Documentation>
                <UserDocu>Tuple of face IDs which does not belong to any volume</UserDocu>
            </Documentation>
            <Parameter Name="FacesOnly" Type="Tuple"/>
        </Attribute>
        <Attribute Name="FaceCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Faces in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="FaceCount" Type="Long"/>
        </Attribute>
        <Attribute Name="TriangleCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Triangles in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="TriangleCount" Type="Long"/>
        </Attribute>
        <Attribute Name="QuadrangleCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Quadrangles in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="QuadrangleCount" Type="Long"/>
        </Attribute>
        <Attribute Name="PolygonCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Quadrangles in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="PolygonCount" Type="Long"/>
        </Attribute>
        <Attribute Name="Volumes" ReadOnly="true">
            <Documentation>
                <UserDocu>Tuple of volume IDs</UserDocu>
            </Documentation>
            <Parameter Name="Volumes" Type="Tuple"/>
        </Attribute>
        <Attribute Name="VolumeCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Volumes in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="VolumeCount" Type="Long"/>
        </Attribute>
        <Attribute Name="TetraCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Tetras in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="TetraCount" Type="Long"/>
        </Attribute>
        <Attribute Name="HexaCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Hexas in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="HexaCount" Type="Long"/>
        </Attribute>
        <Attribute Name="PyramidCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Pyramids in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="PyramidCount" Type="Long"/>
        </Attribute>
        <Attribute Name="PrismCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Prisms in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="PrismCount" Type="Long"/>
        </Attribute>
        <Attribute Name="PolyhedronCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Polyhedrons in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="PolyhedronCount" Type="Long"/>
        </Attribute>
        <Attribute Name="SubMeshCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of SubMeshs in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="SubMeshCount" Type="Long"/>
        </Attribute>
        <Attribute Name="GroupCount" ReadOnly="true">
            <Documentation>
                <UserDocu>Number of Groups in the Mesh.</UserDocu>
            </Documentation>
            <Parameter Name="GroupCount" Type="Long"/>
        </Attribute>
        <Attribute Name="Groups" ReadOnly="true">
            <Documentation>
                <UserDocu>Tuple of Group IDs.</UserDocu>
            </Documentation>
            <Parameter Name="Groups" Type="Tuple"/>
        </Attribute>
        <Attribute Name="Volume" ReadOnly="true">
            <Documentation>
                <UserDocu>Volume of the mesh.</UserDocu>
            </Documentation>
            <Parameter Name="Volume" Type="Object"/>
        </Attribute>
    </PythonExport>
</GenerateModel>
